/*
 * libsynthclone - a plugin API for `synthclone`
 * Copyright (C) 2011 Devin Anderson
 *
 * This library is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by the
 * Free Software Foundation; either version 2.1 of the License, or (at your
 * option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
 * for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */

#include <synthclone/util.h>
#include <synthclone/view.h>

#include "closeeventfilter.h"

using synthclone::View;

View::View(QWidget *rootWidget, QObject *parent):
    QObject(parent)
{
    closeEventFilter = new CloseEventFilter(this);
    connect(closeEventFilter, SIGNAL(closeRequest()), SIGNAL(closeRequest()));
    rootWidget->installEventFilter(closeEventFilter);
    this->rootWidget = rootWidget;
}

View::~View()
{
    delete rootWidget;
    delete closeEventFilter;
}

const QWidget *
View::getRootWidget() const
{
    return rootWidget;
}

QWidget *
View::getRootWidget()
{
    return rootWidget;
}

bool
View::isCloseEnabled() const
{
    return closeEventFilter->isCloseEnabled();
}

bool
View::isVisible() const
{
    return rootWidget->isVisible();
}

void
View::setCloseEnabled(bool enabled)
{
    if (closeEventFilter->isCloseEnabled() != enabled) {
        closeEventFilter->setCloseEnabled(enabled);
        emit closeEnabledChanged(enabled);
    }
}

void
View::setVisible(bool visible)
{
    if (rootWidget->isVisible() != visible) {
        rootWidget->setVisible(visible);
        emit visibilityChanged(visible);
    }
}
